<?php
namespace models;

/**
 * 任务模型
 */
class TaskModel extends \sql\mysql
{
    protected $table = ['task'];
    // protected $field = [];
    // protected $whre = [];
    
    /**
     * 构造函数，连接数据库
     */
    public function __construct()
    {
        parent::connect();
    }

    /**
     * 获取主页任务展示
     * @return array $returnMessage 返回的信息，和操作的状态
     * @return array $result 返回查询数据
     */
    public function getIndex(){
        // 获取数据
        $result = $this->select($this->table);
        // 检查获取数据
        if (!$result->num_rows){
            // 如果没有获取到数据，返回错误信息
            return $returnMessage = array('message' => '没有数据!', 'status' => false);
        } else {
            // 将获得的数据解析为数组
            return $result = $this->transform($result);
        }
    }

    /**
     * 更新指定任务数据
     * @param string $task 需要更新的任务标题
     * @param array $data 需要更新的数据
     * @return array $returnMessage 返回的信息，和操作的状态
     */
    public function updateTask($task, $data)
    {
        // $data['principal'] = USER;
        $where[] = 'title="' . $task . '"';
        $result = $this->update($this->table, $data, $where);
        // 检查更新情况并返回信息
        if(!$result) {
            return $returnMessage = array('message' => '更新数据失败!', 'status' => false);
        } else {
            return $returnMessage = array('message' => '更新数据成功!', 'status' => true);
        }
    }

    /**
     * 添加任务
     * @param array $data 添加任务的数据
     * @return array $returnMessage 返回的信息，和操作的状态
     */
    public function addTask($data)
    {
        // 设置发布人
        $data['leader'] = USER;
        $where[] = 'title="' . $data['title'] . '"';
        // 查询是否已经有任务存在
        $result = $this->select($this->table, null, $where);
        if (!$result->num_rows) {
            // 如果任务不存在，插入数据库
            $retval = $this->insert($this->table, $data);
            // 判断是否插入成功，并返回信息
            if (!$retval) {
                return $returnMessage = array('message' => '添加任务失败!', 'status' => false);
            } else {
                return $returnMessage = array('message' => '添加任务成功!', 'status' => true);
            }
        } else {
            // 如果任务存在，返回信息
            return $returnMessage = array('message' => '任务已存在!', 'status' => false);
        }
    }

    /**
     * 删除任务
     * @param array $data 需要删除的任务标题
     * @return array $returnMessage 返回的信息，和操作的状态
     */
    public function deleteTask($data)
    {
        // 设置发布人
        // $data['leader'] = USER;
        $field = ['leader'];
        $where[] = 'title="' . $data['title'] . '"';
        // 查询是否已经有任务存在
        $result = $this->select($this->table, $field, $where);
        if ($result->num_rows) {
            // 如果任务存在，解析查询结果为数组
            $retval = $this->transform($result);
            // 判断是否是发布人
            if($retval[0]['leader'] == USER) {
                // 如果是发布人，删除数据并返回信息
                if($row = $this->delete($this->table, $where)) {
                    return $returnMessage = array('message' => '删除任务成功!', 'status' => true);
                } else {
                    return $returnMessage = array('message' => '删除任务失败!', 'status' => false);
                }
            } else {
                return $returnMessage = array('message' => '你不是发布人，删除任务失败!', 'status' => false);
            }
        } else {
            // 如果任务不存在，返回信息
            return $returnMessage = array('message' => '任务不存在!', 'status' => false);
        }
    }

    /**
     * 模糊查询，根据关键字查询任务
     * @param array $data 查询的关键词
     * @return array $returnMessage 返回的信息，和操作的状态
     * @return array $result 返回查询数据
     */
    public function search($data)
    {
        $where = ['title LIKE "%' . $data['keyword'] . '%"'];
        $result = $this->select($this->table, null, $where);
        if (!$result->num_rows) {
            // 如果任务不存在，返回信息
            return $returnMessage = array('message' => '没有包含“' . $data["keyword"] . '”的任务!', 'status' => false);
        } else {
            // 如果任务存在，返回数据
            return $result = $this->transform($result);
        }
    }

    /**
     * 任务状态更新
     */
    // public function updateStatus($task, $status)
    // {
    //     $data['status'] = $status;
    //     $this->where[] = 'title="' . $task . '"';
    //     $result = $this->update($this->table, $data, $this->where);
    //     // 检查更新情况
    //     if(!$result) {
    //         return $data = array('message' => '更新数据失败!', 'status' => false);
    //     } else {
    //         return $data = array('message' => '更新数据失败!', 'status' => true);
    //     }
    // }
}